package sk.uniba.fmph.asdf.gui.dialogs;

import java.awt.BorderLayout;
import java.awt.Dimension;
import sk.uniba.fmph.asdf.Session;
import sk.uniba.fmph.asdf.gui.views.MainView;

/**
 * Stavový dialog. Zobrazuje zoznam stavových správ programu.
 *
 * @author Jakub Gaľ
 */
public class StatusMessagesDialog extends Dialog {

	private javax.swing.JScrollPane scrollPaneStatusMessages;
	private javax.swing.JTextArea textAreaStatusMessages;

	/**
	 * Vytvori dialog inicializuje komponenty, nastavi titulok a zobrazi stavove spravy.
	 *
	 * @param parent
	 */
	public StatusMessagesDialog(MainView parent) {
		super(parent);

		setModalityType(ModalityType.APPLICATION_MODAL);
		setResizable(false);
		setTitle("Stavové správy");

		initComponents();

		loadMessages();
	}

	/**
	 * Inicializuje komponenty dialogu
	 */
	private void initComponents() {
		setLayout(new BorderLayout());

		textAreaStatusMessages = new javax.swing.JTextArea();
		textAreaStatusMessages.setMinimumSize(new Dimension(400, 200));
		textAreaStatusMessages.setEditable(false);

		scrollPaneStatusMessages = new javax.swing.JScrollPane();
		scrollPaneStatusMessages.setPreferredSize(new Dimension(400, 200));
		scrollPaneStatusMessages.setViewportView(textAreaStatusMessages);

		add(scrollPaneStatusMessages, BorderLayout.CENTER);

		pack();
	}

	/**
	 * Zobrazi v textarei vsetky aktualne stavove spravy.
	 */
	private void loadMessages() {
		for (String message : Session.getStatusMessages()) {
			textAreaStatusMessages.append(message + System.getProperty("line.separator"));
		}
	}
}
